package cn.ryh.rabbitmq.ttl;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Raoyh
 * @Description
 * @create 2022-07-13 16:49
 */
// @Configuration("ttlRabbitConfig")
public class RabbitConfig {
    /**
     * 创建队列
     */
    @Bean
    public Queue ttlSimpleEmailQueue() {
        // durable:是否持久化,默认是false,持久化队列：会被存储在磁盘上，当消息代理重启时仍然存在，暂存队列：当前连接有效
        // exclusive:默认也是false，只能被当前创建的连接使用，而且当连接关闭后队列即被删除。此参考优先级高于durable
        // autoDelete:是否自动删除，当没有生产者或者消费者使用此队列，该队列会自动删除。
        //一般设置一下队列的持久化就好,其余两个就是默认false
        Map<String,Object> args2 = new HashMap<>(1);
        // 参数 x-message-ttl 的值 必须是非负 32 位整数 (0 <= n <= 2^32-1) ，以毫秒为单位表示 TTL 的值。这样，
        // 值 6000 表示存在于 队列 中的当前 消息 将最多只存活 6 秒钟。
        args2.put("x-message-ttl",5000);
        return new Queue("ttl.simple.queue", true,false,false,args2);
    }
    /**
     * 创建队列
     */
    @Bean
    public Queue ttlMessageSimpleEmailQueue() {
        // durable:是否持久化,默认是false,持久化队列：会被存储在磁盘上，当消息代理重启时仍然存在，暂存队列：当前连接有效
        // exclusive:默认也是false，只能被当前创建的连接使用，而且当连接关闭后队列即被删除。此参考优先级高于durable
        // autoDelete:是否自动删除，当没有生产者或者消费者使用此队列，该队列会自动删除。
        //一般设置一下队列的持久化就好,其余两个就是默认false
        return new Queue("ttlMessage.simple.queue", true);
    }

}
